package leetcode;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Solution890_mine {
	public List<String> findAndReplacePattern(String[] words, String pattern) {
		String[] split = pattern.split("");//拆分字符串
		List<String> match_list=new ArrayList<String>();
		flag: for (int i=0;i<words.length;i++) {
			Map<String, String> map1 = new HashMap<String,String>();//记载word到pattern的映射
			Map<String, String> map2 = new HashMap<String,String>();//记载pattern到word的映射
			String[] word = words[i].split("");
			for(int j=0;j<word.length;j++) {
				if(map1.get(word[j])==null) {//word中该字母未出现过
					map1.put(word[j],split[j]);
					if(map2.get(split[j])!=null&&!map2.get(split[j]).equals(word[j])) {//如果map2中已存在隐射，但是与欲添加的隐射对不上，跳过
						break;
					}
					map2.put(split[j],word[j]);
				}else {//map1中已存在映射关系，检验映射是否对的上
					if(!map1.get(word[j]).equals(split[j])) {
						break;
					}
				}
				if(j==word.length-1) {//到了最后一个还满足要求
					match_list.add(words[i]);
				}
			}
		}
		return match_list;
	}
}
